import moment from 'moment-timezone'
export default {
	install: (Vue, vm) => {
		const publicJS = {
			//判断是否有上一页没有则返回首页
			backOption() {
				if (getCurrentPages().length == 1) {
					uni.switchTab({
						url: '/pages/home/home',
						"animationType": "slide-in-right",
						"animationDuration": 300
					})
				} else {
					console.log(111)
					uni.navigateBack(1)
				}
			},
			// 保留小数操作
			toFixed(num, i = 2) {
				if (num || num == '0') {
					return (Math.floor(num * Math.pow(10, i)) / Math.pow(10, i)).toFixed(i);
				}
			},
			// 像素单位 rpx转px
			rpxToPx(rpx) {
				return uni.upx2px(rpx)
			},
			// 像素单位 px转rpx
			pxToRpx(px) {
				//计算比例
				let scale = uni.upx2px(100) / 100;
				return px / scale
			},
			/*
			 rule:{pwd:[{required:true,msg:'密码为必填项！'}]} 规则
			 data:{pwd:....,xxx:...}
			 */
			validate(rule, data) {
				let status = false // 不通过
				let msg = ''
				// 循环规则对象
				for (let obj in rule) {
					// 循环规则对象的数组
					rule[obj].every(item => {
						// 校验
						if (item.required !== undefined && item.required) {
							status = data[obj] || data[obj] === 0
						} else {
							// 验证正则
							status = item.reg.test(data[obj])
						}
						msg = item.msg
						// 通过status 决定是否继续 every 循环
						return status
					})
					if (!status) {
						uni.showToast({
							title: msg,
							duration: 1000,
							icon: 'none'
						})
						// 循环中断
						return {
							status: !!status,
							msg
						}
					}
				}
				// 全部循环完成兜底返回
				return {
					status: !!status,
					msg
				}
			},
			timestampToTime(date) {
				var y = date.getFullYear();
				var m = date.getMonth() + 1;
				m = m < 10 ? ('0' + m) : m;
				var d = date.getDate();
				d = d < 10 ? ('0' + d) : d;
				var h = date.getHours();
				h = h < 10 ? ('0' + h) : h;
				var minute = date.getMinutes();
				minute = minute < 10 ? ('0' + minute) : minute;
				var second = date.getSeconds();
				second = second < 10 ? ('0' + second) : second;
				return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
			},
			timestampToDay(date) {
				var y = date.getFullYear();
				var m = date.getMonth() + 1;
				m = m < 10 ? ('0' + m) : m;
				var d = date.getDate();
				d = d < 10 ? ('0' + d) : d;
				var h = date.getHours();
				h = h < 10 ? ('0' + h) : h;
				var minute = date.getMinutes();
				minute = minute < 10 ? ('0' + minute) : minute;
				var second = date.getSeconds();
				second = second < 10 ? ('0' + second) : second;
				return y + '-' + m + '-' + d
			},
			// 时区转换
			timeZoneSwitching(date, format = 'DD/MM/YYYY HH:mm:ss', zone) {
				let timeZone = ''
				if (vm.$u.sys().platform === "android") {
					timeZone = plus.android.importClass("java.util.TimeZone").getDefault().getID()
				} else {
					// 步骤 1: 创建一个Date对象
					const currentDate = new Date();

					// 步骤 2: 使用DateTimeFormat方法创建一个格式化对象
					const formatter = new Intl.DateTimeFormat();

					// 步骤 3: 通过格式化对象调用resolvedOptions方法
					const options = formatter.resolvedOptions();
					// 步骤 4: 从返回的结果中获取时区信息
					timeZone = options.timeZone;
				}
			
			if(format!='x'){
				if (zone) {
					return moment(date).tz(zone).format(format)
				} else {
					return moment(date).tz(timeZone).format(format)
				}
			}else{
				if (zone) {
					return Number(moment(date).tz(zone).format(format))
				} else {
					return Number(moment(date).tz(timeZone).format(format))
				}
			}
				

			},
			tryGet(fn, cb) {
				try {
					const value = fn();
					if (typeof cb === 'function') {
						cb(value);
					}
					return value;
				} catch (error) {
					return undefined;
				}
			},
			// 消息类型枚举
			MessageTypeEnum: {
				"push": vm.$t('myNews.push'),
				"notice": vm.$t('myNews.notice'),
				"concern": vm.$t('myNews.concern'),
				"notice_all": vm.$t('myNews.notice_all'),
				"seckill_push": vm.$t('myNews.seckill_push'),
				"order_push": vm.$t('myNews.order_push'),
			},
			// 进入直播间
			intoPlayer(data) {
				// #ifndef APP-PLUS
				uni.$u.toast(uni.$t('media.goApp'))
				// #endif
				// #ifdef APP-PLUS
				try {
					console.log(data, '=============');
					uni.navigateTo({
						url: `/pages/liveBar/livePlayer/livePlayer?userId=${data.userId}&avatar=${data.avatar}&userName=${data.userName}`,
						"animationType": "slide-in-right",
						"animationDuration": 300
					})
				} catch (e) {
					console.log(e);
				}
				// #endif
			},
			/**
			 * @description 调用上一（多）个页面然后调用刷新方法。也许不是上一个呢？做一个统一判断及兼容处理
			 * @param {Object} option 配置
			 * @param {Object} callback
			 */
			updateLastPage(opt = {}, callback = this.backOption) {
				const defOpt = {
					index: 1,
					data: null
				}
				opt = {
					...defOpt,
					...opt
				}
				console.log(opt);
				const pages = getCurrentPages()
				const lastPage = this.tryGet(() => pages[pages.length - (1 + opt.index)]) || {}
				let data = {}
				if (lastPage.route && lastPage.route.includes(opt.url)) {
					try {
						// console.log(lastPage, lastPage.route);
						//#ifdef APP-PLUS
						lastPage.$vm[opt.fn](opt.data)
						//#endif
						//#ifndef APP-PLUS
						lastPage[opt.fn](opt.data)
						//#endif
						data = ({
							status: true
						})
					} catch (e) {
						data = ({
							status: false,
							err: 'function not find'
						})
					}
				} else {
					data = ({
						status: false,
						err: 'route not find'
					})
				}
				callback(data)
			},
			// 处理json 多语言 
			jsonEn(str, keys={en:'english','zh-Hans':'chinese'}) {
				try {
					const strObj = JSON.parse(str)
					return strObj[keys[uni.getLocale()]]
				} catch (e) {
					return str
				}
			},
			// 敬请期待
			noOpen() {
				uni.showToast({
					title: vm.$t('system.comingSoon'),
					icon:"none"
				})
			},
		}
		Vue.prototype.publicJS = publicJS;
		uni.publicJS = publicJS;
	}
}
// export default {
//     //判断是否有上一页没有则返回首页
//     backOption() {
//         if (getCurrentPages().length == 1) {
//             uni.switchTab({
//                 url: '/pages/home/home',
//                 "animationType": "slide-in-right",
//                 "animationDuration": 300
//             })
//         } else {
// 					console.log(111)
//             uni.navigateBack(1)
//         }
//     },
//     // 保留小数操作
//     toFixed(num, i = 2) {
//         if (num || num == '0') {
//             return (Math.floor(num * Math.pow(10, i)) / Math.pow(10, i)).toFixed(i);
//         }
//     },
//     // 像素单位 rpx转px
//     rpxToPx(rpx) {
//         return uni.upx2px(rpx)
//     },
//     // 像素单位 px转rpx
//     pxToRpx(px) {
//         //计算比例
//         let scale = uni.upx2px(100) / 100;
//         return px / scale
//     },
//     /*
//      rule:{pwd:[{required:true,msg:'密码为必填项！'}]} 规则
// 	 data:{pwd:....,xxx:...}
//      */
//     validate(rule, data) {
//         let status = false // 不通过
//         let msg = ''
//         // 循环规则对象
//         for (let obj in rule) {
//             // 循环规则对象的数组
//             rule[obj].every(item => {
//                 // 校验
//                 if (item.required !== undefined && item.required) {
//                     status = data[obj] || data[obj] === 0
//                 } else {
//                     // 验证正则
//                     status = item.reg.test(data[obj])
//                 }
//                 msg = item.msg
//                 // 通过status 决定是否继续 every 循环
//                 return status
//             })
//             if (!status) {
//                 uni.showToast({
//                     title: msg,
//                     duration: 1000,
//                     icon: 'none'
//                 })
// 				// 循环中断
//                 return {status: !!status, msg}
//             }
//         }
// 		// 全部循环完成兜底返回
//         return {status: !!status, msg}
//     },
//     timestampToTime(date) {
//         var y = date.getFullYear();
//         var m = date.getMonth() + 1;
//         m = m < 10 ? ('0' + m) : m;
//         var d = date.getDate();
//         d = d < 10 ? ('0' + d) : d;
//         var h = date.getHours();
//         h = h < 10 ? ('0' + h) : h;
//         var minute = date.getMinutes();
//         minute = minute < 10 ? ('0' + minute) : minute;
//         var second = date.getSeconds();
//         second = second < 10 ? ('0' + second) : second;
//         return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
//     },
// 	tryGet(fn, cb) {
// 		try {
// 			const value = fn();
// 			if (typeof cb === 'function') {
// 				cb(value);
// 			}
// 			return value;
// 		} catch (error) {
// 			return undefined;
// 		}
// 	},
// 	// 消息类型枚举
// 	MessageTypeEnum: {
// 		// "push": uni.$t('myNews.push'),
// 		// "notice": uni.$t('myNews.notice'),
// 		// "concern": uni.$t('myNews.concern'),
// 	},
// 	// 进入直播间
// 	intoPlayer(data){
// 		// #ifndef APP-PLUS
// 		uni.$u.toast(uni.$t('media.goApp'))
// 		// #endif
// 		// #ifdef APP-PLUS
// 		try{
// 			console.log(data,'=============');
// 			uni.navigateTo({
// 				url: `/pages/liveBar/livePlayer/livePlayer?userId=${data.userId}&avatar=${data.avatar}&userName=${data.userName}`,
// 				"animationType": "slide-in-right",
// 				"animationDuration": 300			
// 			})
// 		}catch(e){
// 			console.log(e);
// 		}
// 		// #endif
// 	}
// }